/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * CotacaoView.java
 *
 * Created on 09/05/2011, 16:58:53
 */

package br.com.comprasPublicas.view.cadastro;

import br.com.comprasPublicas.view.pesquisa.PesquisaPedidosAbertosView;
import br.com.comprasPublicas.view.pesquisa.PesquisaPessoaView;
import br.com.comprasPublicas.dao.DAOGenerico;
import br.com.comprasPublicas.entity.Cotacao;
import br.com.comprasPublicas.entity.InclusaoPrecosCotacao;
import br.com.comprasPublicas.entity.ItemPedido;
import br.com.comprasPublicas.entity.Pedido;
import br.com.comprasPublicas.entity.Pessoa;
import br.com.comprasPublicas.util.ConexaoReport;
import br.com.comprasPublicas.util.FormatadoresUtil;
import br.com.comprasPublicas.util.HibernateUtil;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.sql.Connection;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;


/**
 *
 * @author COMPRAS
 */
public class CotacaoView extends javax.swing.JFrame {

    /** Creates new form CotacaoView */
    public CotacaoView() {
        initComponents();
        tblFornecedor.setSelectionMode(0);
        preencher_tblItemPedido();
        btnNovo.requestFocus();

        //Método utilizado para centralizar o JFrame na tela
        Dimension tela = Toolkit.getDefaultToolkit().getScreenSize();
        this.setLocation((tela.width - this.getSize().width) / 2, (tela.height - this.getSize().height) / 2);

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel2 = new javax.swing.JPanel();
        jPanel1 = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        txtCodigo = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        ftxtEmissao = new javax.swing.JFormattedTextField();
        jLabel4 = new javax.swing.JLabel();
        ftxtVencimento = new javax.swing.JFormattedTextField();
        ftxtHoraVencimento = new javax.swing.JFormattedTextField();
        jLabel5 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        txtPedido = new javax.swing.JTextField();
        jLabel9 = new javax.swing.JLabel();
        txtCondPgto = new javax.swing.JTextField();
        jLabel10 = new javax.swing.JLabel();
        txtCondEntrega = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        pnlBotoes = new javax.swing.JPanel();
        btnNovo = new javax.swing.JButton();
        btnSalvar = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        jScrollPane2 = new javax.swing.JScrollPane();
        tblItemPedido = new javax.swing.JTable();
        jScrollPane3 = new javax.swing.JScrollPane();
        tblFornecedor = new javax.swing.JTable();
        pnlDadosSolicitante = new javax.swing.JPanel();
        jLabel7 = new javax.swing.JLabel();
        jLabel8 = new javax.swing.JLabel();
        txtDescDepartamento = new javax.swing.JTextField();
        txtDescSecao = new javax.swing.JTextField();
        btnVoltar = new javax.swing.JButton();
        pnlBotoesFornecedor = new javax.swing.JPanel();
        btnIncluirFornecedor = new javax.swing.JButton();
        btnExcluirFornecedor = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setName("Form"); // NOI18N
        setResizable(false);
        setUndecorated(true);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowActivated(java.awt.event.WindowEvent evt) {
                formWindowActivated(evt);
            }
            public void windowClosed(java.awt.event.WindowEvent evt) {
                formWindowClosed(evt);
            }
        });

        jPanel2.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jPanel2.setName("jPanel2"); // NOI18N

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(br.com.comprasPublicas.compraspublicas.ComprasPublicasApp.class).getContext().getResourceMap(CotacaoView.class);
        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("jPanel1.border.title"))); // NOI18N
        jPanel1.setName("jPanel1"); // NOI18N

        jLabel2.setText(resourceMap.getString("jLabel2.text")); // NOI18N
        jLabel2.setName("jLabel2"); // NOI18N

        txtCodigo.setText(resourceMap.getString("txtCodigo.text")); // NOI18N
        txtCodigo.setEnabled(false);
        txtCodigo.setName("txtCodigo"); // NOI18N

        jLabel3.setText(resourceMap.getString("jLabel3.text")); // NOI18N
        jLabel3.setName("jLabel3"); // NOI18N

        ftxtEmissao.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.DateFormatter(java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM))));
        ftxtEmissao.setText(resourceMap.getString("ftxtEmissao.text")); // NOI18N
        ftxtEmissao.setEnabled(false);
        ftxtEmissao.setName("ftxtEmissao"); // NOI18N

        jLabel4.setText(resourceMap.getString("jLabel4.text")); // NOI18N
        jLabel4.setName("jLabel4"); // NOI18N

        ftxtVencimento.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.DateFormatter(java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM))));
        ftxtVencimento.setText(resourceMap.getString("ftxtVencimento.text")); // NOI18N
        ftxtVencimento.setEnabled(false);
        ftxtVencimento.setName("ftxtVencimento"); // NOI18N

        ftxtHoraVencimento.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.DateFormatter(java.text.DateFormat.getTimeInstance(java.text.DateFormat.SHORT))));
        ftxtHoraVencimento.setText(resourceMap.getString("ftxtHoraVencimento.text")); // NOI18N
        ftxtHoraVencimento.setEnabled(false);
        ftxtHoraVencimento.setName("ftxtHoraVencimento"); // NOI18N

        jLabel5.setText(resourceMap.getString("jLabel5.text")); // NOI18N
        jLabel5.setName("jLabel5"); // NOI18N

        jLabel6.setFont(resourceMap.getFont("jLabel6.font")); // NOI18N
        jLabel6.setText(resourceMap.getString("jLabel6.text")); // NOI18N
        jLabel6.setName("jLabel6"); // NOI18N

        txtPedido.setText(resourceMap.getString("txtPedido.text")); // NOI18N
        txtPedido.setEnabled(false);
        txtPedido.setName("txtPedido"); // NOI18N
        txtPedido.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtPedidoFocusLost(evt);
            }
        });

        jLabel9.setText(resourceMap.getString("jLabel9.text")); // NOI18N
        jLabel9.setName("jLabel9"); // NOI18N

        txtCondPgto.setEnabled(false);
        txtCondPgto.setName("txtCondPgto"); // NOI18N

        jLabel10.setText(resourceMap.getString("jLabel10.text")); // NOI18N
        jLabel10.setName("jLabel10"); // NOI18N

        txtCondEntrega.setEnabled(false);
        txtCondEntrega.setName("txtCondEntrega"); // NOI18N
        txtCondEntrega.setNextFocusableComponent(btnIncluirFornecedor);

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jLabel9)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtCondPgto, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel10)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtCondEntrega, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jLabel6)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtPedido, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(11, 11, 11))
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addComponent(jLabel2)
                .addGap(2, 2, 2)
                .addComponent(txtCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel3)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(ftxtEmissao, javax.swing.GroupLayout.DEFAULT_SIZE, 71, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel4)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(ftxtVencimento, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jLabel5)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(ftxtHoraVencimento, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(10, 10, 10))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(ftxtEmissao, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel4)
                    .addComponent(ftxtVencimento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel5)
                    .addComponent(ftxtHoraVencimento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtCodigo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel9)
                    .addComponent(txtCondPgto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel10)
                    .addComponent(txtCondEntrega, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel6)
                    .addComponent(txtPedido, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
        );

        jLabel1.setFont(resourceMap.getFont("jLabel1.font")); // NOI18N
        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N

        pnlBotoes.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        pnlBotoes.setName("pnlBotoes"); // NOI18N

        btnNovo.setFont(resourceMap.getFont("btnNovo.font")); // NOI18N
        btnNovo.setMnemonic('n');
        btnNovo.setText(resourceMap.getString("btnNovo.text")); // NOI18N
        btnNovo.setName("btnNovo"); // NOI18N
        btnNovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnNovoActionPerformed(evt);
            }
        });

        btnSalvar.setFont(resourceMap.getFont("btnSalvar.font")); // NOI18N
        btnSalvar.setMnemonic('s');
        btnSalvar.setText(resourceMap.getString("btnSalvar.text")); // NOI18N
        btnSalvar.setEnabled(false);
        btnSalvar.setName("btnSalvar"); // NOI18N
        btnSalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnSalvarActionPerformed(evt);
            }
        });

        btnCancelar.setFont(resourceMap.getFont("btnCancelar.font")); // NOI18N
        btnCancelar.setMnemonic('c');
        btnCancelar.setText(resourceMap.getString("btnCancelar.text")); // NOI18N
        btnCancelar.setEnabled(false);
        btnCancelar.setName("btnCancelar"); // NOI18N
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout pnlBotoesLayout = new javax.swing.GroupLayout(pnlBotoes);
        pnlBotoes.setLayout(pnlBotoesLayout);
        pnlBotoesLayout.setHorizontalGroup(
            pnlBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlBotoesLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(btnCancelar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(btnSalvar, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addComponent(btnNovo, javax.swing.GroupLayout.DEFAULT_SIZE, 83, Short.MAX_VALUE))
                .addContainerGap())
        );
        pnlBotoesLayout.setVerticalGroup(
            pnlBotoesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlBotoesLayout.createSequentialGroup()
                .addComponent(btnNovo)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnSalvar, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnCancelar)
                .addContainerGap(4, Short.MAX_VALUE))
        );

        jScrollPane2.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("jScrollPane2.border.title"))); // NOI18N
        jScrollPane2.setName("jScrollPane2"); // NOI18N

        tblItemPedido.setAutoCreateRowSorter(true);
        tblItemPedido.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "item", "Cod.", "Descrição", "Unid.", "Qtde."
            }
        ));
        tblItemPedido.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);
        tblItemPedido.setEnabled(false);
        tblItemPedido.setName("tblItemPedido"); // NOI18N
        tblItemPedido.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);
        tblItemPedido.getTableHeader().setResizingAllowed(false);
        tblItemPedido.getTableHeader().setReorderingAllowed(false);
        tblItemPedido.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tblItemPedidoMouseClicked(evt);
            }
        });
        jScrollPane2.setViewportView(tblItemPedido);

        jScrollPane3.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("jScrollPane3.border.title"))); // NOI18N
        jScrollPane3.setName("jScrollPane3"); // NOI18N

        tblFornecedor.setAutoCreateRowSorter(true);
        tblFornecedor.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Cod.", "Fornecedor"
            }
        ));
        tblFornecedor.setDropMode(javax.swing.DropMode.INSERT_ROWS);
        tblFornecedor.setName("tblFornecedor"); // NOI18N
        tblFornecedor.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);
        tblFornecedor.getTableHeader().setResizingAllowed(false);
        tblFornecedor.getTableHeader().setReorderingAllowed(false);
        tblFornecedor.setUpdateSelectionOnSort(false);
        tblFornecedor.setVerifyInputWhenFocusTarget(false);
        jScrollPane3.setViewportView(tblFornecedor);

        pnlDadosSolicitante.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("pnlDadosSolicitante.border.title"))); // NOI18N
        pnlDadosSolicitante.setName("pnlDadosSolicitante"); // NOI18N

        jLabel7.setText(resourceMap.getString("jLabel7.text")); // NOI18N
        jLabel7.setName("jLabel7"); // NOI18N

        jLabel8.setText(resourceMap.getString("jLabel8.text")); // NOI18N
        jLabel8.setName("jLabel8"); // NOI18N

        txtDescDepartamento.setEnabled(false);
        txtDescDepartamento.setName("txtDescDepartamento"); // NOI18N

        txtDescSecao.setEnabled(false);
        txtDescSecao.setName("txtDescSecao"); // NOI18N

        javax.swing.GroupLayout pnlDadosSolicitanteLayout = new javax.swing.GroupLayout(pnlDadosSolicitante);
        pnlDadosSolicitante.setLayout(pnlDadosSolicitanteLayout);
        pnlDadosSolicitanteLayout.setHorizontalGroup(
            pnlDadosSolicitanteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlDadosSolicitanteLayout.createSequentialGroup()
                .addGroup(pnlDadosSolicitanteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(jLabel7)
                    .addComponent(jLabel8))
                .addGap(16, 16, 16)
                .addGroup(pnlDadosSolicitanteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(txtDescSecao, javax.swing.GroupLayout.DEFAULT_SIZE, 207, Short.MAX_VALUE)
                    .addComponent(txtDescDepartamento, javax.swing.GroupLayout.DEFAULT_SIZE, 207, Short.MAX_VALUE))
                .addContainerGap())
        );
        pnlDadosSolicitanteLayout.setVerticalGroup(
            pnlDadosSolicitanteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlDadosSolicitanteLayout.createSequentialGroup()
                .addGroup(pnlDadosSolicitanteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel8)
                    .addComponent(txtDescDepartamento, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(pnlDadosSolicitanteLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtDescSecao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel7)))
        );

        btnVoltar.setFont(resourceMap.getFont("btnVoltar.font")); // NOI18N
        btnVoltar.setMnemonic('v');
        btnVoltar.setText(resourceMap.getString("btnVoltar.text")); // NOI18N
        btnVoltar.setName("btnVoltar"); // NOI18N
        btnVoltar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnVoltarActionPerformed(evt);
            }
        });

        pnlBotoesFornecedor.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        pnlBotoesFornecedor.setName("pnlBotoesFornecedor"); // NOI18N

        btnIncluirFornecedor.setFont(resourceMap.getFont("btnIncluirFornecedor.font")); // NOI18N
        btnIncluirFornecedor.setMnemonic('i');
        btnIncluirFornecedor.setText(resourceMap.getString("btnIncluirFornecedor.text")); // NOI18N
        btnIncluirFornecedor.setEnabled(false);
        btnIncluirFornecedor.setName("btnIncluirFornecedor"); // NOI18N
        btnIncluirFornecedor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnIncluirFornecedorActionPerformed(evt);
            }
        });

        btnExcluirFornecedor.setFont(resourceMap.getFont("btnExcluirFornecedor.font")); // NOI18N
        btnExcluirFornecedor.setMnemonic('x');
        btnExcluirFornecedor.setText(resourceMap.getString("btnExcluirFornecedor.text")); // NOI18N
        btnExcluirFornecedor.setEnabled(false);
        btnExcluirFornecedor.setName("btnExcluirFornecedor"); // NOI18N
        btnExcluirFornecedor.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnExcluirFornecedorActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout pnlBotoesFornecedorLayout = new javax.swing.GroupLayout(pnlBotoesFornecedor);
        pnlBotoesFornecedor.setLayout(pnlBotoesFornecedorLayout);
        pnlBotoesFornecedorLayout.setHorizontalGroup(
            pnlBotoesFornecedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(pnlBotoesFornecedorLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(pnlBotoesFornecedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(btnExcluirFornecedor, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE)
                    .addComponent(btnIncluirFornecedor, javax.swing.GroupLayout.DEFAULT_SIZE, 95, Short.MAX_VALUE))
                .addContainerGap())
        );
        pnlBotoesFornecedorLayout.setVerticalGroup(
            pnlBotoesFornecedorLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, pnlBotoesFornecedorLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(btnIncluirFornecedor)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(btnExcluirFornecedor)
                .addContainerGap())
        );

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 943, Short.MAX_VALUE)
                    .addComponent(jLabel1)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(pnlDadosSolicitante, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(pnlBotoes, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(pnlBotoesFornecedor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 589, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(btnVoltar, javax.swing.GroupLayout.Alignment.TRAILING))
                .addContainerGap())
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(pnlBotoes, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(pnlDadosSolicitante, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(pnlBotoesFornecedor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 304, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(btnVoltar)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(385, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void btnNovoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnNovoActionPerformed
        duplicidade="n";
        listaPessoa.removeAll(listaPessoa);
        
        if (pesquisaPedidosAbertosView == null) {
            PesquisaPedidosAbertosView frame = new PesquisaPedidosAbertosView(this, rootPaneCheckingEnabled);
            frame.setVisible(true);
        }
    }//GEN-LAST:event_btnNovoActionPerformed

    private void txtPedidoFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtPedidoFocusLost
        pedido = new Pedido();

        List<Pedido> lista = new ArrayList();
        lista = lista_pedido();
        int tamanho_lista = lista.size();
        if (tamanho_lista != 0){
            for(int i = 0; i < tamanho_lista;i++)
            {
                pedido = lista.get(i);
            }
            txtDescDepartamento.setText(pedido.getSecao().getDepartamento().getDepartamento());
            txtDescSecao.setText(pedido.getSecao().getSecao());
            carregar_itens();

        }
        else {
            txtDescDepartamento.setText("");
            txtDescSecao.setText("");
        }

    }//GEN-LAST:event_txtPedidoFocusLost

    private void btnVoltarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVoltarActionPerformed
        Object[] options = { "Sim", "Não" };
        int opcao = JOptionPane.showOptionDialog(
            null,
            "Deseja sair da tela de Cotações?",
            "Saída de Tela",
        JOptionPane.DEFAULT_OPTION,
        JOptionPane.WARNING_MESSAGE,
            null,
            options,
            options[0]);

        if (opcao == 0) {
            this.dispose();
        }
    }//GEN-LAST:event_btnVoltarActionPerformed

    private void btnIncluirFornecedorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnIncluirFornecedorActionPerformed
        if (pesquisaFornecedorView == null) {
            PesquisaPessoaView frame = new PesquisaPessoaView(this, rootPaneCheckingEnabled);
            frame.setVisible(true);
        }
    }//GEN-LAST:event_btnIncluirFornecedorActionPerformed

    private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
        // TODO add your handling code here:
    }//GEN-LAST:event_formWindowClosed

    private void formWindowActivated(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowActivated
       if (pess != null) {
            pessId = pess;
            preenche_fornecedor();
            pess = null;
        }
        else{
            btnNovo.requestFocus();
        }
        if (ped != null) {
            preencher_datas();
            select_max();
            habilita_objetos();
            ftxtEmissao.requestFocus();
            String pedidoId = ped;
            txtPedido.setText(pedidoId);
            txtPedido.requestFocus();
            txtPedido.lostFocus(null, evt);
            ftxtEmissao.requestFocus();
            ped = null;
        }
    }//GEN-LAST:event_formWindowActivated

    private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnSalvarActionPerformed
        if (valida_campos()){
            pega_objetosCotacao();
            if(obj_cotacao.inserir()){
                //Inserindo a cotacao ao Pedido
                pedido.setCotacao(cotacao);
                DAOGenerico obj_pedido = new DAOGenerico(pedido);
                if(obj_pedido.atualizar()){
                }
                else JOptionPane.showMessageDialog(null, "Erro ao inserir a cotacao ao pedido de compra!");

                salva_itens_cotacao();

                JOptionPane.showMessageDialog(null, "Cotação salva com sucesso!");

                imprimi_cotacao();
                limpa_objetos();
            }
            else{
                JOptionPane.showMessageDialog(null, "Erro ao Salvar Cotação");
            }
            desabilita_objeto();
            btnNovo.setEnabled(true);
            btnSalvar.setEnabled(false);
            btnCancelar.setEnabled(false);
        }
    }//GEN-LAST:event_btnSalvarActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed
        limpa_objetos();
        desabilita_objeto();
        btnNovo.setEnabled(true);
        btnSalvar.setEnabled(false);
        btnCancelar.setEnabled(false);
    }//GEN-LAST:event_btnCancelarActionPerformed

    private void tblItemPedidoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblItemPedidoMouseClicked
        JOptionPane.showMessageDialog(null, "Para alterar os itens da tabela acesse manutenção de Pedidos!");
    }//GEN-LAST:event_tblItemPedidoMouseClicked

    private void btnExcluirFornecedorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExcluirFornecedorActionPerformed
        remove_fornecedor();
    }//GEN-LAST:event_btnExcluirFornecedorActionPerformed

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new CotacaoView().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnExcluirFornecedor;
    private javax.swing.JButton btnIncluirFornecedor;
    private javax.swing.JButton btnNovo;
    private javax.swing.JButton btnSalvar;
    private javax.swing.JButton btnVoltar;
    private javax.swing.JFormattedTextField ftxtEmissao;
    private javax.swing.JFormattedTextField ftxtHoraVencimento;
    private javax.swing.JFormattedTextField ftxtVencimento;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JPanel pnlBotoes;
    private javax.swing.JPanel pnlBotoesFornecedor;
    private javax.swing.JPanel pnlDadosSolicitante;
    private javax.swing.JTable tblFornecedor;
    private javax.swing.JTable tblItemPedido;
    private javax.swing.JTextField txtCodigo;
    private javax.swing.JTextField txtCondEntrega;
    private javax.swing.JTextField txtCondPgto;
    private javax.swing.JTextField txtDescDepartamento;
    private javax.swing.JTextField txtDescSecao;
    private javax.swing.JTextField txtPedido;
    // End of variables declaration//GEN-END:variables

    public void preencher_tblItemPedido()
    {
        //Alinhar colunas tabela de itens
        tblItemPedido.getColumnModel().getColumn(0).setPreferredWidth(10);
        tblItemPedido.getColumnModel().getColumn(1).setPreferredWidth(10);
        tblItemPedido.getColumnModel().getColumn(2).setPreferredWidth(600);
        tblItemPedido.getColumnModel().getColumn(3).setPreferredWidth(40);
        tblItemPedido.getColumnModel().getColumn(4).setPreferredWidth(50);

        //Alinhar colunas tabela fornecedor
        tblFornecedor.getColumnModel().getColumn(0).setPreferredWidth(20);
        tblFornecedor.getColumnModel().getColumn(1).setPreferredWidth(500);

        DefaultTableModel modelo_tbl = (DefaultTableModel) tblFornecedor.getModel();
        modelo_tbl.setNumRows(0);
    }

    public void select_max()
    {
        cotacao = new Cotacao();
        DAOGenerico obj_dao_generico = new DAOGenerico(cotacao);
        List<Cotacao> lista = new ArrayList();
        lista = obj_dao_generico.executa_query("select_max_id_cotacao");
        int tamanho_lista = lista.size();

        if (tamanho_lista == 0) txtCodigo.setText("1");

        for(int i = 0; i < tamanho_lista;i++)
        {
            cotacao = lista.get(i);
            String id = String.valueOf(cotacao.getId_cotacao()+1);
            txtCodigo.setText(id);
        }
    }

    public void habilita_objetos()
    {
        btnIncluirFornecedor.setEnabled(true);
        btnExcluirFornecedor.setEnabled(true);
        txtCondEntrega.setEnabled(true);
        txtCondPgto.setEnabled(true);
        ftxtEmissao.setEnabled(true);
        ftxtVencimento.setEnabled(true);
        ftxtHoraVencimento.setEnabled(true);
        btnNovo.setEnabled(false);
        btnCancelar.setEnabled(true);
        btnSalvar.setEnabled(true);
    }

    public void desabilita_objeto()
    {
        btnIncluirFornecedor.setEnabled(true);
        btnExcluirFornecedor.setEnabled(true);
        txtCondEntrega.setEnabled(false);
        txtCondPgto.setEnabled(false);
        txtPedido.setEnabled(false);
        ftxtEmissao.setEnabled(false);
        ftxtVencimento.setEnabled(false);
        ftxtHoraVencimento.setEnabled(false);
        btnNovo.setEnabled(true);
        btnCancelar.setEnabled(false);
        btnSalvar.setEnabled(false);
    }

    public void limpa_objetos()
    {
        ftxtEmissao.setText("");
        ftxtVencimento.setText("");
        ftxtHoraVencimento.setText("");
        txtCondEntrega.setText("");
        txtCondPgto.setText("");
        txtPedido.setText("");
        txtCodigo.setText("");
        txtDescDepartamento.setText("");
        txtDescSecao.setText("");
        listaItens.clear();
        DefaultTableModel tabela_pedido =(DefaultTableModel) tblItemPedido.getModel();
        tabela_pedido.setNumRows(0);
        DefaultTableModel  tabela_fornecedor = (DefaultTableModel) tblFornecedor.getModel();
        tabela_fornecedor.setNumRows(0);
    }

    private void preencher_datas() {
        //preencher a data de hoje no campo data do pedido
        Date hoje = new Date(System.currentTimeMillis());
        String formato = "dd/MM/yyyy";
        SimpleDateFormat formatter = new SimpleDateFormat(formato);
        String dataHoje = formatter.format(hoje);
        ftxtEmissao.setText(dataHoje);

        Date hora = new Date(System.currentTimeMillis());
        String formatoHora = "HH:mm";
        SimpleDateFormat formatandoHora = new SimpleDateFormat(formatoHora);
        String horaVencimento = formatandoHora.format(hora);
        ftxtHoraVencimento.setText(horaVencimento);

        //Pega a data atual utilizando a classe "Calendar"
        Calendar agora = Calendar.getInstance();

        //Adicionando 3 dias a data atual
        agora.add(Calendar.DAY_OF_MONTH, 3);
        //Outro modo de fazer: agora.add(Calendar.DATE, 3);

        //Formata a saida da data e exibe em uma caixa de texto formatada
        Format formatoVencimento = new SimpleDateFormat("dd/MM/yyyy");
        String dataVencimento = formatoVencimento.format(agora.getTime());
        ftxtVencimento.setText(dataVencimento);
    }

    private List<Pedido> lista_pedido() {
        Session sessao = HibernateUtil.getSessao();
        Transaction transacao = sessao.beginTransaction();
        Query query = sessao.createQuery("from Pedido where id_pedido = :id_ped");
        query.setString("id_ped", txtPedido.getText());

        List pedidoList = query.list();

        if(pedidoList.isEmpty()){
            txtPedido.setText("");
            JOptionPane.showMessageDialog(null, "Não existe este Pedido!");
        }
        transacao.commit();
        sessao.close();
        return pedidoList;
    }

    private void carregar_itens() {
        Session sessao = HibernateUtil.getSessao();
        Transaction transacao = sessao.beginTransaction();

        //Utilizando criteria para instanciar ItemPedido.class
        Criteria crit = sessao.createCriteria(ItemPedido.class);
        Pedido pedidoBusca = pedido;

        //Buscando conforme restrição
        crit.add(Restrictions.like("pedido", pedidoBusca));
        List lista = crit.list();

        DefaultTableModel modelo_tbl = (DefaultTableModel) tblItemPedido.getModel();
        modelo_tbl.setNumRows(0);

        itemPedido = new ItemPedido();

        //Preechendo a tabela de itens Pedido
        int tamanho_lista = lista.size();
        for (int i=0; i<tamanho_lista; i++)
        {
            itemPedido = (ItemPedido) lista.get(i);
            modelo_tbl.addRow(new Object[]{itemPedido.getId_itemPedido(),
                                            itemPedido.getProduto().getId_produto(),
                                            itemPedido.getProduto().getNome(),
                                            itemPedido.getUnidade(),
                                            itemPedido.getQuantidade()
                                            });
            listaItens.add(itemPedido);
        }
        transacao.commit();
        sessao.close();
    }
    
    private void preenche_fornecedor() {
        pessoa = new Pessoa();
        List<Pessoa> lista = new ArrayList ();
        lista = pessoa_by_codigo();
        int tamanho_lista = lista.size();
        for (int i=0; i<tamanho_lista; i++)
        {
            pessoa = lista.get(i);
        }
        //Verificando se o fornecedor a ser incluido já existe nesta cotação
        int listaVerDuplicidade = listaPessoa.size();
        for (int j=0;j<listaVerDuplicidade; j++){
            Pessoa pessoaDup = listaPessoa.get(j);
            if (pessoaDup.getId_pessoa() == pessoa.getId_pessoa()){
                duplicidade = "s";
            }
        }
        //Se não existir o fornecedor na tabela, o fornecedor selecionado será incluso
        if (duplicidade.equals("n")){
            if (!pessoa.getSituacao().equals("Nada Consta")){
                JOptionPane.showMessageDialog(null, "Atenção: Existe a seguinte obstrução para este fornecedor: "+pessoa.getSituacao());
            }
            DefaultTableModel modelo_tbl = (DefaultTableModel) tblFornecedor.getModel();
            modelo_tbl.addRow(new Object[]{pessoa.getId_pessoa(),
                                           pessoa.getNome_razao_soc()
                                       });
            listaPessoa.add(pessoa);
        }
        else if(duplicidade.equals("s")) JOptionPane.showMessageDialog(null, "Fornecedor já inserido na Cotação");
        duplicidade = "n";
    }

    public List pessoa_by_codigo()
    {
        Session sessao = HibernateUtil.getSessao();
        Transaction transacao = sessao.beginTransaction();

        Query query = sessao.createQuery("from Pessoa where id_pessoa = :id_pess");
        query.setString("id_pess", pessId);

        List pessoaList = query.list();

        transacao.commit();
        sessao.close();

        return pessoaList;
    }

    private void pega_objetosCotacao() {
        try{
            cotacao = new Cotacao();
            cotacao.setId_cotacao(Integer.parseInt(txtCodigo.getText()));

            Date dataEmissao = Calendar.getInstance().getTime();
            dataEmissao = FormatadoresUtil.data2Banco(ftxtEmissao.getText());
            cotacao.setData_emissao(dataEmissao);

            Date dataVencimento = Calendar.getInstance().getTime();
            dataVencimento = FormatadoresUtil.data2Banco(ftxtVencimento.getText());
            cotacao.setData_vencimento(dataVencimento);

            cotacao.setHora_vencimento(ftxtHoraVencimento.getText());

            cotacao.setPedido(pedido);

            cotacao.setCondicao_pagamento(txtCondPgto.getText());

            cotacao.setCondicao_entrega(txtCondEntrega.getText());

            cotacao.setValor_totalCotacao(0);

            obj_cotacao = new DAOGenerico(cotacao);

        }
        catch(Exception erro)
        {
            JOptionPane.showMessageDialog(null, "Não foi possível selecionar uma cotacao "+erro);
        }

    }

    private void salva_itens_cotacao() {
         int tamanho_lista = listaPessoa.size();
         for (int i=0; i<tamanho_lista; i++)
         {
             pessoa = listaPessoa.get(i);
             int tamanho_listaItens = listaItens.size();
             for (int j=0; j<tamanho_listaItens; j++)
             {
                 itemPedido = listaItens.get(j);
                 select_maxInclusao();
                 inclusaoPrecosCotacao.setId_inclusaoPrecosCotacao(ultimaInclusao);
                 inclusaoPrecosCotacao.setCotacao(cotacao);
                 inclusaoPrecosCotacao.setPessoa(pessoa);
                 inclusaoPrecosCotacao.setItem_pedido(itemPedido);
                 inclusaoPrecosCotacao.setValor_unitario(0.0);
                 inclusaoPrecosCotacao.setValor_total(0.0);

                 listaInclusaoPrecos.add(inclusaoPrecosCotacao);

                 obj_inclusaoPrecos = new DAOGenerico(inclusaoPrecosCotacao);

                 try{
                     salva_inclusaoPrecos();
                 }
                 catch(Exception e){
                 }
             }
         }
    }

    public void select_maxInclusao()
    {
        inclusaoPrecosCotacao = new InclusaoPrecosCotacao();
        DAOGenerico obj_dao_generico = new DAOGenerico(inclusaoPrecosCotacao);
        List<InclusaoPrecosCotacao> lista = new ArrayList();
        lista = obj_dao_generico.executa_query("select_max_id_inclusao");
        int tamanho_lista = lista.size();

        for(int i = 0; i < tamanho_lista;i++)
        {
            inclusaoPrecosCotacao = lista.get(i);
            String id = String.valueOf(cotacao.getId_cotacao()+1);
            ultimaInclusao = Integer.parseInt(id);
        }
    }

    public void salva_inclusaoPrecos(){
        if(obj_inclusaoPrecos.inserir()){
        }
        else JOptionPane.showMessageDialog(null, "Erro ao carregar os itens a cotação!");
    }
    
    private boolean valida_campos(){
        Boolean retorno = true;
        String erros = new String();

        if (ftxtEmissao.getText().equals("")){
            erros += "Data de Emissão não informada\n";
            retorno = false;
        }

        if (ftxtVencimento.getText().equals("")){
            erros += "Data de Vencimento não informada\n";
            retorno = false;
        }

        if (ftxtHoraVencimento.getText().equals("")){
            erros += "Hora do Vencimento não informada\n";
            retorno = false;
        }

        if (txtCondEntrega.getText().equals("")){
            erros += "Condição de Entrega não informada\n";
            retorno = false;
        }

        if (txtCondPgto.getText().equals("")){
            erros += "Condição de Pagamento não informada\n";
            retorno = false;
        }

        if (tblFornecedor.getRowCount()<2){
            erros += "Devem haver no mínimo 2 fornecedores para cadastrar uma Cotação\n";
            retorno = false;
        }

        if (!retorno){
            JOptionPane.showMessageDialog(null, "Os seguinte(s) erro(s) ocorreu(ram):\n"+erros);
        }

        return retorno; 
    }

    private void remove_fornecedor() {
        int selecao_fornecor = tblFornecedor.getSelectedRow();
        listaPessoa.remove(selecao_fornecor);
        DefaultTableModel modelo_tbl = (DefaultTableModel) tblFornecedor.getModel();
        modelo_tbl.removeRow(tblFornecedor.getSelectedRow());
       
    }

    private void imprimi_cotacao(){
        //Pergunta ao usuario se deseja imprimir o relatório
        Object[] options = { "Sim", "Não" };
        int opcao = JOptionPane.showOptionDialog(
            null,
            "DESEJA IMPRIMIR A COTAÇÃO PARA ENVIAR À EMPRESA?",
            "Imprimir Cotação",
        JOptionPane.DEFAULT_OPTION,
        JOptionPane.WARNING_MESSAGE,
            null,
            options,
            options[0]);
        if (opcao == 0) {
            //sequência de métodos para imprimir a cotação
            Connection con = null;
            try {
                //cria a conexao com o banco de dados
                con = ConexaoReport.getConnection();
                //parametro para busca em relatorio Cotacao
                HashMap<String, Integer> parameterMap = new HashMap<String, Integer>();
                //buscando o id_cotacao para passar ao parametro
                Integer cotacaoId = cotacao.getId_cotacao();
                //nome do parametro e o valor é passado ao HashMap
                parameterMap.put("id_cotacao", cotacaoId);
                //parameterMap.put("id_cotacao", 18);

                //PEGA O CAMINHO FISICO DO ARQUIVO .jasper
                String arquivo = "./report/Cotacao.jasper";

                //chama fillReport(caminho fisico, parametros, conexão)
                JasperPrint jp = JasperFillManager.fillReport(arquivo, parameterMap, con);

                //exibe o relatorio com o viewReport
                JasperViewer.viewReport(jp, false);

                }
                catch (Exception ex) {
                    JOptionPane.showMessageDialog(null, "Erro em impressão de Relatorio: " +ex);
                }
                finally {
                    try {
                        if (!con.isClosed()) {
                            con.close();
                        }
                    } catch (Exception e) {
                        JOptionPane.showMessageDialog(null, "Erro ao fechar conexão: " + e);
                    }
                }
        }
        

    }

    private List<Pessoa> listaPessoa = new ArrayList<Pessoa>();
    private List<ItemPedido> listaItens = new ArrayList<ItemPedido>();
    private String pessId;
    private Cotacao cotacao;
    public static String pess=null;
    private PesquisaPessoaView pesquisaFornecedorView;
    private PesquisaPedidosAbertosView pesquisaPedidosAbertosView;
    private Pedido pedido;
    private DAOGenerico obj_cotacao;
    private DAOGenerico obj_inclusaoPrecos;
    private Pessoa pessoa;
    private ItemPedido itemPedido;
    private int ultimaInclusao;
    private InclusaoPrecosCotacao inclusaoPrecosCotacao;
    private List<InclusaoPrecosCotacao> listaInclusaoPrecos = new ArrayList<InclusaoPrecosCotacao>();
    public static String ped=null;
    private String duplicidade ="n";

}
